This invention relates to communication in a data processing system. In particular, this invention relates to communication in a data processing system including multi-port mass storage devices. More particularly, this invention relates to communication in a data processing system in which a plurality of main processing units, multi-port mass storage devices, and device controllers are arranged in a network configuration.
Mass storage devices--i.e., tape and disk drives, and more commonly disk drives--are the primary storage devices for permanent data in electronic digital computer systems. For purposes of discussion, only disk drives will be referred to hereafter, it being understood that any mass storage technology--i.e., hard disk, floppy disk, optical disk, tape, cache memory or other technology--can be substituted. Disk drives communicate with the computer system through one or more connections which are both physical and logical and are referred to as ports. More than one storage device can be operated such that controllers and main processing units perceive several devices to be a single storage device or storage unit. As referred to hereafter, a "storage unit" may be a single storage device, or multiple devices that are recognized as a single storage device, or part of a device or devices recognized as a single device.
Communications between a disk drive and the main processing unit of the computer system are usually handled by an intermediary device known as a controller. The controller translates the logical instructions and requests of the main processing unit into simpler, more physical device oriented commands of the drive, as well as relaying any messages that the drive may have for the main processing unit. In addition, there are messages that pass between the controller and the drive that are independent of the main processing unit.
A disk drive (or storage unit) may have more than one port. Such drives are referred to as "multi-port" drives. A multi-port drive is capable of communicating with the computer system even if one of its ports is disabled for any reason, simply by communicating through a different port. However, it may not be possible for it to communicate with all parts of the system, depending on which controllers are connected through which ports, and how those controllers are connected to the rest of the system.
In a system with more than one controller, it is desirable to connect the different ports of a multi-port disk drive to different controllers. That way, if a controller is disabled, it will still be possible for the main processing unit or units to communicate with any associated drives through other controllers, although certain known multi-port drives are capable of having only one port active, for purposes of normal data movement, at any one time, so that a controller connected to an inactive port of the drive cannot communicate with the drive for purposes of normal data movement until something causes the drive to deactivate its current port and activate a new port.
Main processing units in a computer system maintain "paths" of communication to other devices in the system. A main processing unit will store configuration information that lets it know through which paths it can communicate to its devices. A path is defined by data structures in the machine (e.g., the main processing unit, device controller, storage device set or individual storage device) which needs to communicate with another machine. Generally, a path is ONLINE, AVAILABLE, or OFFLINE.
Computer systems having a plurality of main processing units, controllers and storage units exist in different architectures and configurations. In one type of system architecture, known as channel architecture, the main processing unit communicates with the storage unit by way of one or more controllers through one or more channels. In another type of system architecture, the main processing units, controllers, and storage units are connected in a network configuration, and the various components communicate using packet switching techniques such as those used in local area networks and public switched data networks.
When such systems are turned on or otherwise initialized, the main processing units become aware of the available storage units and the various paths to those storage units. In some systems, that information is entered by an operator into a table, and the table is loaded from memory when the system is turned on, with the operator making any necessary changes. In other systems, each main processing unit may broadcast a message for all devices to identify themselves, and those messages would be answered by all devices that could communicate with that main processing unit. In still other systems, each device on power-up broadcasts a message that it is available, and any main processing unit that hears that message knows that that device is available.
In the latter two types of systems, the ability to have all paths to all devices properly announced may be limited if not all ports of a multi-port device can be active at once. Multi-port devices all of whose ports can be active at once are known in channel architecture systems, but in such systems the announcement of paths is not usually a concern. On the other hand, in a previously known network architecture system having multi-port devices, only one port can be active at any one time. In such systems, the controllers take charge of the path announcement function, each controller instructing each storage unit under its control to announce itself through its current port, and then to temporarily deactivate its current port and activate each of its other ports and announce itself through each of those ports to any other controllers to which it is connected, before reactivating its current port. The controllers then announce all available devices to the main processing units on the network. In such systems, each storage device only communicates, for purposes of normal data movement, through one of the two ports (assuming a two-port device), and only switches ports in the event of a hardware failure. This means that all main processing units wishing to move data to or from the device burden one of the two controllers, while the other controller receives none of the burden. To relieve this burden, operators may manually set some of the storage devices to communicate through one port while setting the rest of the storage devices to communicate through the other port, thereby achieving some measure of distribution of workload through the controllers.
It would be desirable to be able to provide a multi-port storage unit in a network architecture system which can have any or all of its ports active at any time. This would give the capability to main processing units to dynamically distribute the workload associated with one unit to the various controllers that it is attached to. It could also allow a controller that was least busy to handle a particular data transfer at the point that the unit is ready for that transfer. Such a multi-ported storage unit would be especially advantageous in a network in which two or more simultaneous data exchanges are possible. The possibility of a main processing unit not being able to move data to or from a device would be diminished not only by the availability of multiple paths to or from a main processing unit to a controller (if one is busy, the other may be used) but also by the availability of multiple controllers that can be used to move data to or from a storage unit (if one is busy, the other can be used).
It would also be desirable to be able to provide such a system in which a storage unit could announce itself without having to deactivate any active ports.